package com.qiwx.pigeon.data.network;

import com.qiwx.pigeon.data.params.CLZTParam;
import com.qiwx.pigeon.data.params.CageAdjustParam;
import com.qiwx.pigeon.data.params.CageParam;
import com.qiwx.pigeon.data.params.ChartParam;
import com.qiwx.pigeon.data.params.CheckEggParam;
import com.qiwx.pigeon.data.params.FarmPageParam;
import com.qiwx.pigeon.data.params.FertilizeParam;
import com.qiwx.pigeon.data.params.GETCLZTParam;
import com.qiwx.pigeon.data.params.GetMemberParam;
import com.qiwx.pigeon.data.params.GoOutParam;
import com.qiwx.pigeon.data.params.LoginParam;
import com.qiwx.pigeon.data.params.LoseEggParam;
import com.qiwx.pigeon.data.params.PigeonDeathParam;
import com.qiwx.pigeon.data.params.QueryCageParam;
import com.qiwx.pigeon.data.params.QueryWareHouseParam;
import com.qiwx.pigeon.data.params.SearchParam;
import com.qiwx.pigeon.data.params.UpdatePwdParam;
import com.qiwx.pigeon.data.vo.CageBeanVo;
import com.qiwx.pigeon.data.vo.CageRepairBean;
import com.qiwx.pigeon.data.vo.CageStateBean;
import com.qiwx.pigeon.data.vo.CageStatusRecordBean;
import com.qiwx.pigeon.data.vo.ChartFertilizedBeanVo;
import com.qiwx.pigeon.data.vo.EggLoseBean;
import com.qiwx.pigeon.data.vo.EliminateBean;
import com.qiwx.pigeon.data.vo.EmployBean;
import com.qiwx.pigeon.data.vo.FertilizeBean;
import com.qiwx.pigeon.data.vo.GoOutBean;
import com.qiwx.pigeon.data.vo.LayEggAmountBean;
import com.qiwx.pigeon.data.vo.PairBean;
import com.qiwx.pigeon.data.vo.QueryCageBean;
import com.qiwx.pigeon.data.vo.QueryFertilizedBean;
import com.qiwx.pigeon.data.vo.QueryWareHouseBean;
import com.qiwx.pigeon.data.vo.RemindBean;
import com.qiwx.pigeon.data.vo.CageProduceBean;
import com.qiwx.pigeon.data.vo.SummaryCL;
import com.qiwx.pigeon.data.vo.SummaryDaliy;
import com.qiwx.pigeon.data.vo.SummaryOther;
import com.qiwx.pigeon.data.vo.WareHouseBean;
import com.qiwx.pigeon.data.vo.pageinfo.PageInfo;
import com.qiwx.pigeon.data.vo.stock.AddGoodBean;
import com.qiwx.pigeon.data.vo.stock.CustomerBean;
import com.qiwx.pigeon.data.vo.stock.GoodCategory;
import com.qiwx.pigeon.data.vo.stock.SupplierBean;

import retrofit2.http.Body;
import retrofit2.http.POST;
import rx.Observable;

/**
 * @description
 * @Author qiwx
 * @Date 2020-04-16 11:08
 **/
public interface ApiService {
    //查询鸽仓情况
//    @FormUrlEncoded
    @POST("/warehouse/queryHouse")
    Observable<BaseListResponse<WareHouseBean>> getHouses(@Body QueryWareHouseParam param);

    //添加鸽仓
    @POST("/warehouse/addHouse")
    Observable<BaseResponse<WareHouseBean>> addHouse(@Body QueryWareHouseParam param);

    //删除鸽仓
    @POST("/warehouse/deleteHouse")
    Observable<BaseResponse<WareHouseBean>> deleteHouse(@Body QueryWareHouseParam param);

    //添加鸽笼
    @POST("/cage/addCage")
    Observable<BaseResponse<Integer>> addCage(@Body CageParam param);

    //查询鸽笼
    @POST("/cage/queryCagesByPage")
    Observable<BaseResponse<PageInfo<CageBeanVo>>> queryCagesByPage(@Body CageParam param);

    //查询空窝
    @POST("/cage/getKWListByPage")
    Observable<BaseResponse<PageInfo<CageBeanVo>>> getKWListByPage(@Body CageParam param);

    //添加鸽笼
    @POST("/cage/updateCageStatus")
    Observable<BaseResponse<Integer>> updateCageStatus(@Body CageParam param);

    //查蛋操作
    @POST("/cage/getCheckEggListByPage")
    Observable<BaseResponse<PageInfo<FertilizeBean>>> getCheckEggListByPage(@Body CheckEggParam param);

    //获取需要调窝的鸽笼
    @POST("/cage/getCageAdjustListByPage")
    Observable<BaseResponse<PageInfo<FertilizeBean>>> getCageAdjustListByPage(@Body CheckEggParam param);


    //保存下蛋
    @POST("/cage/saveLayEgg")
    Observable<BaseResponse<Integer>> saveLayEgg(@Body FertilizeParam param);
    //查蛋更新操作

    @POST("/cage/updateCheckEggStatus")
    Observable<BaseResponse<Integer>> updateCheckEggStatus(@Body FertilizeParam param);

    //死亡调仔
    @POST("/cage/addPigeonDeath")
    Observable<BaseResponse> addPigeonDeath(@Body PigeonDeathParam param);

    //存栏状态修改
    @POST("/cage/changeCLZT")
    Observable<BaseResponse> changeCLZT(@Body CLZTParam param);

    //获取存栏状态
    @POST("/cage/getCageState")
    Observable<BaseResponse<CageStateBean>> getCLZT(@Body GETCLZTParam param);

    //需调窝
    @POST("/cage/changeCage")
    Observable<BaseResponse> changeCage(@Body CageBeanVo param);

    //不孵蛋 踩破蛋
    @POST("/cage/addEggLose")
    Observable<BaseResponse> addEggLose(@Body LoseEggParam param);

    //鸽崽调整
    @POST("/cage/adjustPigeon")
    Observable<BaseResponse> adjustPigeon(@Body CageAdjustParam param);

    //创建鸽笼维修
    @POST("/cage/addCageRepair")
    Observable<BaseResponse> addCageRepair(@Body CageRepairBean param);


    //未下蛋
    @POST("/cage/queryWXDByPage")
    Observable<BaseResponse<PageInfo<CageBeanVo>>> queryWXDByPage(@Body CageParam param);

    //下蛋记录
    @POST("/cage/getLayEggRecordByPage")
    Observable<BaseResponse<PageInfo<CageProduceBean>>> getLayEggRecordByPage(@Body FertilizeParam param);

    //需调窝鸽笼
    @POST("/home/queryCageChangeByPage")
    Observable<BaseResponse<PageInfo<CageBeanVo>>> queryCageChangeByPage(@Body CageParam param);

    //空笼鸽笼
    @POST("/home/queryCageEmptyByPage")
    Observable<BaseResponse<PageInfo<CageBeanVo>>> queryCageEmptyByPage(@Body CageParam param);

    //鸽笼维修
    @POST("/home/queryCageRepairByPage")
    Observable<BaseResponse<PageInfo<CageRepairBean>>> queryCageRepairByPage(@Body CageParam param);

    //查崽
    @POST("/home/queryCageBabyByPage")
    Observable<BaseResponse<PageInfo<CageBeanVo>>> queryCageBabyByPage(@Body CageParam param);

    //查蛋
    @POST("/home/queryCageEggByPage")
    Observable<BaseResponse<PageInfo<CageBeanVo>>> queryCageEggByPage(@Body CageParam param);

    //淘汰鸽笼列表
    @POST("/home/queryCageEliminateByPage")
    Observable<BaseResponse<PageInfo<EliminateBean>>> queryCageEliminateByPage(@Body CageParam param);

    @POST("/cage/updateCageEliminate")
    Observable<BaseResponse> updateCageEliminate(@Body EliminateBean param);

    //查询需要配对鸽笼
    @POST("/home/queryCagePairByPage")
    Observable<BaseResponse<PageInfo<PairBean>>> queryCagePairByPage(@Body CageParam param);

    //查询需要配对鸽笼
    @POST("/home/queryRemindMessage")
    Observable<BaseResponse<RemindBean>> queryRemindMessage(@Body CageParam param);

    //调整鸽笼
    @POST("/home/updateCageIsAdjust")
    Observable<BaseResponse> updateCageIsAdjust(@Body CageParam param);

    //设置存栏状态
    @POST("/home/updateCageCL")
    Observable<BaseResponse> updateCageCL(@Body CageParam param);

    //设置空笼状态
    @POST("/home/updateCageKL")
    Observable<BaseResponse> updateCageKL(@Body CageParam param);

    //设置维修
    @POST("/home/updateCageRepair")
    Observable<BaseResponse> updateCageRepair(@Body CageParam param);

    //设置配对
    @POST("/home/updateCagePair")
    Observable<BaseResponse> updateCagePair(@Body CageParam param);

    //更新查崽鸽笼状态
    @POST("/home/updateCageCZ")
    Observable<BaseResponse> updateCageCZ(@Body FertilizeParam param);
    //查询鸽场统计

    @POST("/cage/queryWareHouseByPage")
    Observable<BaseResponse<PageInfo<QueryWareHouseBean>>> queryWareHouseByPage(@Body QueryWareHouseParam param);

    //搜索鸽笼
    @POST("/cage/searchCage")
    Observable<BaseResponse<CageProduceBean>> searchCage(@Body SearchParam param);

    //查询鸽笼受精情况
    @POST("/cage/queryCageFertilizeByPage")
    Observable<BaseResponse<PageInfo<CageProduceBean>>> queryCageFertilizeByPage(@Body QueryCageParam param);

    //添加鸽笼淘汰
    @POST("/cage/addCageEliminate")
    Observable<BaseResponse> addCageEliminate(@Body CageParam param);

    //设置空窝
    @POST("/cage/updateCageKW")
    Observable<BaseResponse<Integer>> updateCageKW(@Body CageParam param);

    //删除鸽笼记录并设置鸽笼状态为空窝
    @POST("/cage/deleteCageRecord")
    Observable<BaseResponse<Integer>> deleteCageRecord(@Body CageParam param);

    //查询鸽笼自存栏至今生产情况
    @POST("/cage/queryCageFertilize")
    Observable<BaseResponse<QueryCageBean>> queryCageFertilize(@Body QueryCageParam param);

    //查看鸽笼操作记录
    @POST("/home/getCageStatusRecord")
    Observable<BaseListResponse<CageStatusRecordBean>> getCageStatusRecord(@Body FertilizeParam param);

    //登录接口
    @POST("/account/login")
    Observable<BaseResponse<EmployBean>> login(@Body LoginParam param);

    //查询受精统计表
    @POST("/summary/queryChartFertilized")
    Observable<BaseResponse<ChartFertilizedBeanVo>> queryChartFertilized(@Body ChartParam param);

    //查询出栏统计表
    @POST("/summary/queryChartCK")
    Observable<BaseResponse<SummaryCL>> queryChartCK(@Body ChartParam param);

    //查询日常数据统计表
    @POST("/summary/queryChartDaliy")
    Observable<BaseListResponse<SummaryDaliy>> queryChartDaliy(@Body ChartParam param);

    //添加成员
    @POST("/account/addEmployer")
    Observable<BaseResponse> addEmployer(@Body EmployBean params);

    //获取账号下属信息
    @POST("/account/getMembersByPage")
    Observable<BaseResponse<PageInfo<EmployBean>>> getMembersByPage(@Body GetMemberParam params);

    //添加成员
    @POST("/account/updatePwd")
    Observable<BaseResponse> updatePwd(@Body UpdatePwdParam params);


    //查询下蛋
    @POST("/cage/queryLayEggAmount")
    Observable<BaseListResponse<LayEggAmountBean>> queryLayEggAmount(@Body ChartParam param);

    //查蛋损失
    @POST("/cage/queryEggLoseAmount")
    Observable<BaseListResponse<EggLoseBean>> queryEggLoseAmount(@Body ChartParam param);

    //查蛋损失
    @POST("/cage/queryShoujAmount")
    Observable<BaseListResponse<QueryFertilizedBean>> queryShoujAmount(@Body ChartParam param);

    //其他
    @POST("/cage/queryOtherAmount")
    Observable<BaseListResponse<SummaryOther>> queryOtherAmount(@Body ChartParam param);

    //添加出栏操作
    @POST("/stock/addGoOut")
    Observable<BaseResponse> addGoOut(@Body GoOutBean param);

    //获得出栏记录
    @POST("/stock/getGoOutRecordListByPage")
    Observable<BaseResponse<PageInfo<GoOutBean>>> getGoOutRecordList(@Body GoOutParam param);

    //删除出栏操作
    @POST("/stock/deleteGoOut")
    Observable<BaseResponse<Integer>> deleteGoOut(@Body GoOutBean param);


    //添加商品类别
    @POST("/stock/addGoodCategory")
    Observable<BaseResponse> addGoodCategory(@Body GoodCategory param);
    //添加商品
    @POST("/stock/addGoodRecord")
    Observable<BaseResponse> addGoodRecord(@Body AddGoodBean param);


    //添加商品
    @POST("/stock/addGood")
    Observable<BaseResponse> addGood(@Body GoodCategory param);

    //删除商品
    @POST("/stock/deleteGoodCate")
    Observable<BaseResponse> deleteGoodCate(@Body GoodCategory param);

    // 获取商品列表
    @POST("/stock/getGoodCateListByPage")
    Observable<BaseResponse<PageInfo<GoodCategory>>> getGoodCateListByPage(@Body FarmPageParam param);

    //添加供应商
    @POST("/stock/addSupplier")
    Observable<BaseResponse> addSupplier(@Body SupplierBean param);


    //删除供应商
    @POST("/stock/deleteSupplier")
    Observable<BaseResponse> deleteSupplier(@Body SupplierBean param);

    // 获取供应商列表
    @POST("/stock/getSupplierList")
    Observable<BaseResponse<PageInfo<SupplierBean>>> getSupplierList(@Body FarmPageParam param);

    //添加客户
    @POST("/stock/addCustomer")
    Observable<BaseResponse> addCustomer(@Body CustomerBean param);

    //删除客户
    @POST("/stock/deleteCustomer")
    Observable<BaseResponse> deleteCustomer(@Body CustomerBean param);

    // 获取客户列表
    @POST("/stock/getCustomerList")
    Observable<BaseResponse<PageInfo<CustomerBean>>> getCustomerList(@Body FarmPageParam param);

}
